From: Georges Basile Stavracas Neto Date: Thu, 21 Nov 2019 21:45:12 +0000 (-0300) Subject: folderView: Reset schemas before removing the folder X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~396 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=bd173ac5d243f097f56728e897809451d1735735;p=gnome-shell.git folderView: Reset schemas before removing the folder When removing the last icon of a folder, FolderView first removes the folder from org.gnome.desktop.app-folders.folder-children, then proceeds to reset all its keys, which removes the relocatable schema. That order of operations turns out to be problematic. Removing the folder from 'folder-children' destroys the folder icon, which in turn destroys the folder view, which throws a load of warnings in the journal. Fix that by removing the folder after resetting the schema keys. In fact, what we're doing here is not using 'this' anymore. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/841 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 5b9d4d87f..bc411b029 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -1454,15 +1454,15 @@ class FolderView extends BaseAppView { // Remove the folder if this is the last app icon; otherwise, // just remove the icon if (folderApps.length == 0) { - let settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' }); - let folders = settings.get_strv('folder-children'); - folders.splice(folders.indexOf(this._id), 1); - settings.set_strv('folder-children', folders); - // Resetting all keys deletes the relocatable schema let keys = this._folder.settings_schema.list_keys(); for (let key of keys) this._folder.reset(key); + + let settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' }); + let folders = settings.get_strv('folder-children'); + folders.splice(folders.indexOf(this._id), 1); + settings.set_strv('folder-children', folders); } else { this._folder.set_strv('apps', folderApps); }